<?php
/*
19-10-11 
Copyright (c) 2011, Yonel Meza Avila
All rights reserved.
Liberado bajo licencia New BSD License (BSD) 


Definición del servidor soap
*/

//Librerias
require_once "lib/nusoap.php";
require_once "funciones.php";

//Creación del servidor soap
$server = new nusoap_server;
$server->configureWSDL('wordquipux','http://10.11.11.105/soapexample/server.php/wordquipux');
//Codificación UTF-8
$server->soap_defencoding = 'UTF-8';

//Definición de tipos de datos
//Estructura tipo diccionario clave=>valor
$server->wsdl->addComplexType(
    'ClaveValor',
    'complexType',
    'struct',
    'all',
    '',
    array(
        'Clave' => array('name' => 'Clave', 'type' => 'xsd:string'),
        'Valor' => array('name' => 'Valor', 'type' => 'xsd:string')
    )
);


//Definición de tipos de datos
//Arreglo de la estructura Clave,Valor
$server->wsdl->addComplexType(
        'ClaveValores',
        'complexType',
        'array',
        '',
        'SOAP-ENC:Array',
        array(),
        array(
                'ClaveValor' => array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ClaveValor[]')
        ),
        'tns:ClaveValor'
    );

/*Servicio para obtener usuarios (usuarios y ciudadanos)
	Parametros:
		user: Usuario
		password: Contraseña del usuario
		name: filtro tipo like para el nombre del usuario
	Resultado
		Arreglo de clave,valor con los usuarios y su id
	Función:
		Obtener usuarios para enviar documentos
*/
$server->register('get_usuarios', 
		array("user"=>"xsd:string","pass"=>"xsd:string", "name"=>"xsd:string"),
		array("result"=>"tns:ClaveValores"));
/*Servicio para obtener tipos de documentos
	Parametros:
		user: Usuario
		password: Contraseña del usuario
	Resultado
		Arreglo de clave,valor con los tipos de documentos y su id
	Función:
		Obtener tipos de documentos para la metadata
*/
$server->register('get_tipo_documento', 
		array("user"=>"xsd:string","pass"=>"xsd:string"),
		array("result"=>"tns:ClaveValores"));
/*Servicio para obtener categorías
	Parametros:
		user: Usuario
		password: Contraseña del usuario
	Resultado
		Arreglo de clave,valor con las categorías de documentos y su id
	Función:
		Obtener categorías de documentos para la metadata
*/
$server->register('get_tipo_categoria', 
		array("user"=>"xsd:string","pass"=>"xsd:string"),
		array("result"=>"tns:ClaveValores"));
/*Servicio para recibir la metadata de un archivo enviado
	Parametros:
		user: Usuario
		password: Contraseña del usuario
		referencia: Número de referencia
		asunto: Asunto
		desc_anex: Comentarios del anexo
		raditexto: texto para generar documento por html
		categoria: id de la categoría
		tipo: id del tipo de documento
		para: lista de usarios destino para enviar el documento (-id1--id2--id3-)
		id_documento: id del documento devuelto despues de subirlo al servidor
		nomb_archivo: nombre original del archivo
		enviar_documento: 1 enviar documento, 0 dejar el documento en elaboraión
		obs_envio: observación de envío, soló se debe enviar si enviar_documento es igual 1
	Resultado
		Arreglo de clave,valor con clave='success' -> no hubo problema ó clave='error' y valor='mensaje' si no se pudo crear el archivo
	Función:
		Obtener tipos de documentos para la metadata
		Se debe ejecutar luego de hacer el upload a http://servidor/webservice/upload.php
*/
$server->register('send_document_metadata', 
		array("user"=>"xsd:string","pass"=>"xsd:string",
		"referencia"=>"xsd:string",
		"asunto"=>"xsd:string",
		"desc_anex"=>"xsd:string",
		"raditexto"=>"xsd:string",
		"categoria"=>"xsd:string",
		"tipo"=>"xsd:string",
		"para"=>"xsd:string",
		"id_documento"=>"xsd:string",
		"nomb_archivo"=>"xsd:string",
		"enviar_documento"=>"xsd:string",
		"obs_envio"=>"xsd:string",
		"cc"=>"xsd:string"
		),
		array("result"=>"tns:ClaveValor"));
		

// depacho del servicio
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

